<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="./js/vue.js"></script>
  </head>
  <body>
    <div id="root">
      <h2>a:{{numbers.a}}</h2>
      <button @click="numbers.a++">点我改变a的值</button>

      <h2>b:{{numbers.b}}</h2>
      <button @click="numbers.b++">点我改变a的值</button>
    </div>
    <!-- 
      深度监视:
          1.Vue中的watch默认不监视对象内部值的变化
          2.要检测对象内部值的变化，需要加deep  设置为true
      备注:
          1.Vue可以监测自身内部值的改变，但是提供的watch默认不可以
          2.使用watch时，根据数据的结构判断是否需要深度监视

     -->
    <script type="text/javascript">
      Vue.config.productionTip = false
      const vm = new Vue({
        el: '#root',
        data: {
          numbers: {
            a: 1,
            b: 2,
          },
        },
        watch: {
          /* 'numbers.a': {
            handler() {
              console.log('a的值被改变了')
            },
          },
          'numbers.b': {
            handler() {
              console.log('b的值被改变了')
            },
          }, */
          numbers: {
            immediate: true, //上来就执行一次
            deep: true, //深度监视，可以监视到对象里面的属性值是否改变了
            handler() {
              console.log('number对象的值被改变了')
            },
          },
        },
      })
    </script>
  </body>
</html>
